iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0
Software Development

Google Cloud Platform 零基礎入門系列 第 13

GCP 零基礎入門 (13) - 一般檔案的儲存服務 - Cloud Storage

  • 分享至 

  • xImage
  •  

哈囉大家好,我是古古

上一篇文章有先簡短提到了 Google Cloud 中的數據儲存服務分成三種分類,分別是「一般檔案的儲存服務」、「SQL 的儲存服務」以及「NoSQL 的儲存服務」這三大類

所以這篇文章,就會接著來介紹第一種分類「一般檔案的儲存服務」,也就是 Cloud Storage

什麼是 Cloud Storage?


Cloud Storage 是 Google Cloud 中的一般檔案儲存服務,舉凡要儲存的檔案是影片、圖片、或是任何的二進制檔案 (Blob),就是會使用 Cloud Storage 來存

https://ithelp.ithome.com.tw/upload/images/20230928/20151036Nem6W3ebrH.png

補充:什麼是二進制檔案 (Blob)?

Blob 的全稱是 Binary Large Object,中文翻譯為「二進制檔案」,舉凡一般最常見的影片、圖片、文件、ppt...等等,這些都是屬於 Blob 的一員

除了上述這些檔案之外,其實像是系統備份檔案、log 備份、build 好的 docker image、甚至程式運行過程中產生的檔案....等等,這些也都是屬於 Blob 的一員,所以 Blob 其實比想像中還常出現在我們的身邊

因此如果要分類的話,舉凡那些 「沒辦法使用 SQL 和 NoSQL 來儲存的資料」,就通通可以算是 Blob 的一員

而只要你是屬於 Blob 的檔案,在 Google Cloud 裡面就都是透過 Cloud Storage 來儲存,所以換句話說的話,非 SQL 和非 NoSQL 的那些數據們,就全部都塞進 Cloud Storage 就對了!

補充:這邊有提到 Structured data 和 Unstructured data 的定義

  • Structured data:指那些有被組織化過、很好進行分析的數據,像是 SQL 和 NoSQL 的數據都是屬於這一類
  • Unstructured data:和上面的相反,舉凡那些不是 SQL 和 NoSQL 的,像是影片圖片這種 Blob 二進制檔案,就都是屬於 unstructured data

以 Bucket 為單位進行管理


在 Cloud Storage 服務中,我們可以創建許多個 bucket (桶子) 來儲存數據,而每一個 Blob 二進制檔案 (ex: 圖片),就可以儲存在指定的 bucket 裡面

這裡大家可以先把 bucket 想像成是資料夾的概念,每一個 bucket 就是一個資料夾,根據不同的 bucket,我們可以設定該 bucket 的權限和等級,分別進行管理

所以在 Cloud Storage 中,基本上就是以 bucket 為單位在進行管理的,不同用途的檔案,就會放在不同的 bucket 中來管理

Cloud Storage 的四種儲存等級


有了 Bucket 的概念之後,我們可以先跳來介紹 Cloud Storage 中的四種儲存等級,後續再回頭細講 Bucket 的相關設定

在前面有提到,Cloud Storage 中儲存的都是 Blob 的二進制檔案 (ex: 圖片),而每一個檔案,都必須要指定要存在哪一個 bucket 桶子裡面

針對每一個 Bucket,Cloud Storage 設計了四種儲存等級,依照 「該數據被存取的頻繁程度」 來區別,因此我們是可以根據數據存取的頻繁程度,去選擇該 bucket 想要套用什麼樣的等級的

Cloud Storage 中的四種儲存等級分別為:Standard Storage、Nearline Storage、Coldline Storage、Archive Storage

https://ithelp.ithome.com.tw/upload/images/20230928/20151036qjUUWbBGZT.png

1. Standard Storage

  • 適合放最頻繁存取的 data 們,這種 data 又可稱為 hot data
    • 因此像是剛產生出來 3 天內的 log、程式運行到一半產生的檔案...等,都可放這等級
  • 價格最貴,不過這個等級的 data 可以馬上取用,不需要多等時間和多付費用

2. Nearline Storage

  • 適合放那些不用天天看,但是一個月會想存取一次的數據
    • 像是 30 天前的 log、data backup...等,這些 data 也不是天天要用,但是如果不幸線上出狀況的話就需要回頭查閱,這類型的 data 就可以放這個等級
  • 價錢次貴
    • 而且從這個等級開始就需要低消,也就是 data 會被限制一定要放滿一定天數才能夠被刪除,像是這個等級的 data 要放滿 30 天才能夠刪除
    • 並且從這個等級開始,後續想要查看 data 的話,除了要多付一筆費用給 Google 之外,還要花時間等 Google 撈 data 回來(不是馬上按了就能看,而是要等一段時間才能看到)

3. Coldline Storage

  • 適合那些每 90 天才會想存取一次的數據

  • 第三貴,也是有低消,data 要放滿 90 天才能被刪除

  • 要查看 data 同樣需要等 Google 撈 data 回來,也需要多付一筆費用

4. Archive Storage

  • 適合那些每 365 天才會想存取一次的數據

  • 最便宜,也是有低消,data 要放滿 365 天才能被刪除

  • 要查看 data 要等最久,也要付最多錢

小結:根據不同的情境,選擇最適合的儲存等級

從上述 Cloud Storage 提供的這四種儲存等級來看,基本上可以發現 Cloud Storage 就是 以「數據存取的容易程度」來決定他貴不貴,越方便存取的就越貴,越難存取的就越便宜

因此大家想要省錢的話,在 data 的管理上面就非常重要,像是以前自架主機的時候不會想那麼多,檔案創下去之後後續就不管了,但是用了雲端服務之後就要切的特別細

舉例來說,光是 log 這件事,就可以切成好幾個階段來儲存:

  1. 像是「剛產生出來~30 天」內的 log,就可以放在 Standard Storage 的 bucket 中,方便存取
  2. 當這些 log 檔案的 「年紀 (Age)」 超過 30 天,就可以把他搬到 Nearline Storage 的 bucket 中省點錢
    • 補充:檔案的 age 是滿常見的講法,表示「這個檔案從創建到現在過了多久」
  3. 當這些 log 檔的 age 超過 90 天,就可以考慮搬到 Coldline Storage 的 bucket 中更省錢、或是可以考慮要不要刪掉
    • 要依需求而評估要搬還是要刪,不是全部直接搬到 Coldline Storage 的 bucket 中,有的 log 留那麼久可能沒什麼意義,而有的 log 就是一定要留著,讓 user 有權力可以回頭查,因此可以根據需求而定
  4. 當 log 檔的 age 超過 365 天的,一樣可以考慮搬到更省的 Archive Storage、或是直接刪掉

Bucket 的詳細介紹


透過上面的介紹,可以看到在 Cloud Storage 裡面,基本上就是以 bucket 為單位來進行管理和設定,而 bucket 在設定上,也是有一些注意事項的

1. 檔案必須放在 Bucket 底下

一定得先創建一個 bucket 出來,才能夠將檔案上傳到 Cloud Storage 中的 bucket 裡面,所以沒有先創建 bucket 的話是沒辦法上傳檔案的

2. Bucket 的名字不可以重複,並且他是公開的

在創建 bucket 時,我們可以自己取這個 bucket 的名字,但是要注意的是,這個名字必須得是「全世界唯一」,所以不可以和其他 bucket 撞名就對了

另外在 Cloud Storage 中的所有 bucket,都是會出現在公開的列表上的,所以 bucket 的名字是所有人都看得到的,因此建議就不要將敏感資訊放在 bucket 的名字上面,以免洩漏敏感資訊

3. 基於 Bucket 來設定儲存等級

如上一個篇幅所述,bucket 是可以依照 「數據被存取的頻繁程度」,來選擇想要套用哪個儲存等級的

像是我們可以創建兩個 bucket,一個是 my1、另一個是 my2,my1 就設定成 Standard Storage,負責裝需要即時存取的 data,而 my2 則可以設定成 Nearline Storage,負責裝沒那麼需要即時存取的 data

因此到時候再上傳檔案時,就可以根據該檔案的使用情境,決定要上傳到 my1 還是 my2 bucket 裡面

4. Bucket 可以選擇備份範圍

在創建 bucket 時,可以選擇該 bucket 要創建成 region、multi-region 還是 dual-region 的

Region 的 bucket

  • 如果選擇的是 region,就表示只把 bucket 中的圖片放在台灣的 region 上,因此如果台灣毀滅了,圖片就沒了
  • 價格最便宜

Multi-region 的 bucket

  • 如果選擇的是 multi-region,就表示把 bucket 中的圖片放在多個 region 中備份儲存
    • 選擇 multi-region 的話,還需要選擇要儲存在哪個大區域,目前有三種可以選,分別是:ASIA、EU、US
    • 假設選擇的是 ASIA,那 Google 會保證把圖片備份到 ASIA 中的兩個 region,並且這兩個 region 的物理距離會大於 100 英里,因此假設 ASIA 中有一個地方毀滅了,bucket 中的圖片還會活著,如果非常不幸另一個地方也毀滅了,圖片才會消失
  • 價格次貴

Dual-region 的 bucket

  • 如果選擇的是 dual-region,那就是我們可以自己 特別指定兩個 region 去備份 bucket 中的圖片
    • 但是這個指定是有限制的(不能隨便亂指,且這兩個 region 一定要在同洲區)
  • 價格最貴,比 multi-region 還貴!
    • 原因是因為 multi-region 可以讓 Google 自由選擇要備份到同洲區的哪個地方,但是 dual-region 則是讓我們自己指定,因此 multi-retion 才會比較便宜
    • 如果沒有特別的需求,使用 multi-region 就很夠用了

5. Bucket 沒有限制上傳的檔案大小

bucket 本身沒有限制上傳的檔案大小,所以要上傳多大的檔案都是可以的

6. 基於 Bucket 的權限管理

可以使用 IAM 來設定整個 bucket 能讓誰存取(有關 IAM 的部分後續的系列文中會介紹),不過 bucket 也有保留彈性,可以單獨設定裡面的某一個檔案權限

所以換句話說的話,就算我們設定了這個 bucket 只能讓內部的人存取,但是仍舊可以保留彈性,單獨設定這個 bucket 中的某個檔案,將他開放給外部人士存取的

7. Bucket 中的檔案版本控制

每個檔案上傳到 Cloud Storage 中之後,就不能夠被修改,只能被覆蓋或刪除,也因為如此,所以在 bucket 中是支援檔案的版本控制,讓我們找回被覆蓋或是被刪除的檔案的

舉例來說,假設在 bucket 中已經有一個圖片 white.png,這時有人又硬要上傳一個同名的 white.png,並且在上傳時選擇覆蓋圖片的話,這時 bucket 中的 white.png 就會變成新的那張,但是如果我們回頭去查看 white.png 的歷史紀錄的話,仍舊是可以找到原本那張 white.png 的圖片的

但也因為 bucket 預設是把該檔案的所有歷史紀錄給存起來,因此如果保留太多歷史紀錄的話,反而會佔太多空間,所以大家如果不需要這麼多歷史紀錄版本,是可以去調整 bucket 的設定的(詳見下面第 8 點)

8. Bucket 支援多種清理空間的方式

bucket 本身是支援許多種清理空間的方式的,譬如說我們可以將 bucket 設定成:

  • 檔案的 age 超過 365 天就要刪除
  • 檔案創建時間在 2013/1/1 之前的要被刪除
  • 只保留 3 個最新的版本
  • ....等等

以上這些設定是可以同時一起套用的,所以透過這些設定,就可以定時定期的去管理 bucket 裡面的檔案內容,最大化管理空間出來(雲端上的每個 byte 都是錢啊!!)

9. Bucket 能和其他服務互動

在 Cloud Storage 中,最直覺的使用方式就是直接手動上傳檔案到 bucket 裡面,不過 Cloud Storage 真正強大的地方,是他可以和 Google Cloud 中的其他服務互動

譬如說當使用者透過 Compute Engine 中運行後端程式,去使用了上傳圖片的功能,那麼 Compute Engine 是可以將該圖片的資料轉存在 Cloud Storage 裡面,達到統一管理圖片的目的

或是說 Compute Engine 中的程式所產生的報表資料,也是可以放到 Cloud Storage 裡面儲存的,這樣就可以方便後續非工程的人員,直接透過 Cloud Storage 的介面查看該檔案,所以我們就不用再開發一個前端介面給他們下載檔案了,讚!

總結


這篇文章介紹了 Cloud Storage 提供的是什麼樣的數據儲存服務,並且也介紹了他儲存數據的四種等級,最後也詳細介紹了 Bucket 的設定以及用法,讓大家對 Cloud Storage 中的 Bucket 運作邏輯有更多的認識

那麼下一篇文章,我們就會來介紹另一大分類「SQL 的儲存服務」中的第一個服務,也就是 Cloud SQL,那我們就下一篇文章見啦!

相關連結



上一篇
GCP 零基礎入門 (12) - Google Cloud 中的數據儲存服務簡介
下一篇
GCP 零基礎入門 (14) - SQL 的儲存服務 - Cloud SQL
系列文
Google Cloud Platform 零基礎入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
ckp6250
iT邦好手 1 級 ‧ 2024-06-07 05:10:35

十分感恩。

譬如說當使用者透過 Compute Engine 中運行後端程式,去使用了上傳圖片的功能,那麼 Compute Engine 是可以將該圖片的資料轉存在 Cloud Storage 裡面,達到統一管理圖片的目的

請問,這是要用 api 方式去存取嗎?還是可以 mount 某一個 Bucket 到虛擬機的資料夾?

如果可以的話,要怎麼下指令?或者,在 /etc/fstab 可以直接做設定連結 Bucket ?

古古 iT邦新手 3 級 ‧ 2024-06-09 14:26:41 檢舉

哇抱歉我只有用過 API 的方式去存取,沒用過 mount 或是 /etc/fstab 的用法😂,在 Google 的官方教學影片中好像也沒有特別提到這一塊,提供給你參考~

ckp6250 iT邦好手 1 級 ‧ 2024-06-09 14:35:07 檢舉

感恩,我自行研究看看。

我要留言

立即登入留言